home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / trueSpace 7.6 / tS761B8Std.exe / {app} / Scripts / D3D / RsD3DShadowMapRT2.fx < prev    next >
Text File  |  2008-06-10  |  4KB  |  139 lines

  1.  
  2. //----------------------------------------------------------------------
  3. //Shadow map rendering
  4. //
  5. //Author - Michal Valient
  6. //Copyright (C) 2004-2008 Caligari corporation
  7. //
  8. //----------------------------------------------------------------------
  9.  
  10.  
  11. //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  12. //Keep in sync with shadow portion in RsD3DMaterialFromME2_Template.fx
  13. //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  14.  
  15. uniform float4x4 mToClip;
  16. uniform float    fBias;
  17.  
  18. struct VS_MATSHADOW_IN {
  19.     float4 vPosition : POSITION; //position in object space
  20. };
  21.  
  22. typedef struct {
  23.     float4 vPosition : POSITION;
  24.     float4 vPosition2: TEXCOORD0;
  25. } VS_MATSHADOW_OUT;
  26.  
  27. VS_MATSHADOW_OUT VS_CMaterialShadowBuffer(in VS_MATSHADOW_IN input)
  28. {
  29.     VS_MATSHADOW_OUT output;
  30.     output.vPosition = mul(input.vPosition, mToClip); //vertex clip position
  31.     output.vPosition2 = output.vPosition;
  32.     return output;
  33. }
  34.  
  35. float4 VS_CMaterialShadowBufferHardware(in VS_MATSHADOW_IN input) : POSITION
  36. {
  37.     float4 ret_val = mul(input.vPosition, mToClip); //vertex clip position
  38.     return ret_val;
  39. }
  40.  
  41. float4 PS_CMaterialShadowBuffer(in VS_MATSHADOW_OUT input) : COLOR
  42. {
  43.     float4 vRet;
  44.     float fVal = input.vPosition2.z / input.vPosition2.w + fBias;
  45.     vRet.x = fVal * 255.0f;
  46.     vRet.y = (vRet.x - floor(vRet.x)) * 255.0f;
  47.     vRet.z = (vRet.y - floor(vRet.y)) * 255.0f;
  48.     vRet.w = (vRet.z - floor(vRet.z)) * 255.0f;
  49.     vRet = floor(vRet) / 255.0f;
  50.  
  51. //    vRet.x = floor(vRet.x) / 255.0f;
  52. //    vRet.y = floor(vRet.y) / 255.0f;
  53. //    vRet.z = floor(vRet.z) / 255.0f;
  54. //    vRet.w = floor(vRet.w) / 255.0f;
  55.  
  56. //    vRet.x = input.vPosition2.z / input.vPosition2.w + fBias;
  57. //    vRet.y = frac(vRet.x * 256.0f);
  58. //    vRet.z = frac(vRet.y * 256.0f);
  59. //    vRet.w = frac(vRet.z * 256.0f);
  60.     return vRet;
  61. }
  62.  
  63. float4 PS_CMaterialShadowBufferHardware() : COLOR
  64. {
  65.     return 0;
  66. }
  67.  
  68. float4 PS_CMaterialShadowBufferHQ(in VS_MATSHADOW_OUT input) : COLOR
  69. {
  70.     return input.vPosition2.z / input.vPosition2.w + fBias;
  71. }
  72.  
  73. vertexshader VS_CMaterialShadowBuffer20 = compile vs_2_0 VS_CMaterialShadowBuffer();
  74.  
  75. vertexshader VS_CMaterialShadowBufferHardware11 = compile vs_1_1 VS_CMaterialShadowBufferHardware();
  76.  
  77. pixelshader PS_CMaterialShadowBuffer20 = compile ps_2_0 PS_CMaterialShadowBuffer();
  78.  
  79. pixelshader PS_CMaterialShadowBuffer20HQ = compile ps_2_0 PS_CMaterialShadowBufferHQ();
  80.  
  81. pixelshader PS_CMaterialShadowBufferHardware11 = compile ps_1_1 PS_CMaterialShadowBufferHardware();
  82.  
  83.  
  84.  
  85.  
  86.  
  87. technique T_ShadowMapRGBA8 
  88. {
  89.     pass P0
  90.     {
  91.         VertexShader = (VS_CMaterialShadowBuffer20);
  92.         PixelShader = (PS_CMaterialShadowBuffer20);
  93.  
  94.         AlphaBlendEnable = false;
  95.  
  96.         ZEnable = true;
  97.         ZFunc = LESSEQUAL;
  98.         ZWriteEnable = true;
  99.  
  100.         Cullmode = NONE;
  101.     }
  102. }
  103.  
  104. technique T_ShadowMapMQ 
  105. {
  106.     pass P0
  107.     {
  108.         VertexShader = (VS_CMaterialShadowBuffer20);
  109.         PixelShader = (PS_CMaterialShadowBuffer20HQ);
  110.  
  111.         AlphaBlendEnable = false;
  112.  
  113.         ZEnable = true;
  114.         ZFunc = LESSEQUAL;
  115.         ZWriteEnable = true;
  116.  
  117.         Cullmode = NONE;
  118.     }
  119. }
  120.  
  121. technique T_ShadowMapHardware
  122. {
  123.     pass P0
  124.     {
  125.         VertexShader = (VS_CMaterialShadowBufferHardware11);
  126.         PixelShader = (PS_CMaterialShadowBufferHardware11);
  127.  
  128.         AlphaBlendEnable = false;
  129.  
  130.         ZEnable = true;
  131.         ZFunc = LESSEQUAL;
  132.         ZWriteEnable = true;
  133.         
  134.         ColorWriteEnable = 0;
  135.  
  136.         Cullmode = NONE;
  137.     }
  138. }
  139.